#pragma once
#include "DllExport.h"
#include "math.h"

namespace NBGUI
{
	enum EventType
	{
		MOUSE_MOVE = 0,
		MOUSE_BUTTON_DOWN,
		MOUSE_BUTTON_PRESS,
		MOUSE_BUTTON_RELEASE,
		MOUSE_SCROLL,
		MOUSE_DRAG,
		KEY_DOWN,
		KEY_PRESS,
		KEY_RELEASE
	};

	class GUIAPI Event
	{
	public:
		Event(EventType _t):type(_t)
		{}
		virtual ~Event()
		{}
		EventType type;
	};

	class GUIAPI MouseEvent: public Event
	{
	public:
		MouseEvent(EventType _t,vec3f& delta,vec2f& _pos);
		MouseEvent(EventType _t,unsigned int _bt,vec2f& _pos);
		MouseEvent(EventType _t,unsigned int _bt,vec2f& _pos,vec3f& delta);
		virtual ~MouseEvent();
		vec3f deltaMove;
		unsigned int bt;
		vec2f pos;
	};

	class GUIAPI KeyEvent: public Event
	{
	public:
		KeyEvent(EventType _t, int _key);
		~KeyEvent();
		int virtualKey;
	};
}